﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Control.Catalogo;
using Entidades.Catalogo;
using Entidades.General;
using Navegador.Vistas;
using Entidades.Solicitud;

namespace SICOIA.UserControls.Solicitud
{
    public partial class ucBusquedaSolicitudPadre : ViewController //System.Web.UI.UserControl
    {
        EntUsuario usuario = new EntUsuario();
        protected void Page_Load(object sender, EventArgs e)
        {
                if ((EntUsuario)Session["UserPemex"] == null)
                    Response.Write("<script>parent.window.open('../Marcos/EndPEMEX.aspx','_top')</script>");
                else
                    usuario = (EntUsuario)Session["UserPemex"];

                if (!Page.IsPostBack)
                {
                    LlenarCombos();
                    this.grdSoliciudes.DataSource = new List<Entidades.General.IEntidad>();
                    this.grdSoliciudes.DataBind();
                }

        }

        private void LlenarCombos()
        {
            try
            {
                CtrlSolicitante controlSolicitante = new CtrlSolicitante();
                List<EntSolicitante> ListaSolicitante = new List<EntSolicitante>();
                ListaSolicitante = (List<EntSolicitante>)controlSolicitante.ObtenerTodos().ConvertAll<EntSolicitante>(delegate(IEntidad enti) { return (EntSolicitante)enti; });

                int indexCombo = 0;
                this.cmbArea.Items.Clear();
                this.cmbArea.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntSolicitante elemento in ListaSolicitante)
                    this.cmbArea.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveSolicitante.ToString(), true));

                CtrlActivo ctrlActivo = new CtrlActivo();
                List<EntActivo> ListaActivo = new List<EntActivo>();
                ListaActivo = (List<EntActivo>)ctrlActivo.ObtenerTodos().ConvertAll<EntActivo>(delegate(IEntidad enti) { return (EntActivo)enti; });

                indexCombo = 0;
                this.cmbActivos.Items.Clear();
                this.cmbActivos.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntActivo elemento in ListaActivo)
                    this.cmbActivos.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveActivo.ToString(), true));

                CtrlEstatus ctrlEstatus = new CtrlEstatus();
                List<EntEstatus> ListaEstatus = new List<EntEstatus>();
                ListaEstatus = (List<EntEstatus>)ctrlEstatus.ObtenerTodos().ConvertAll<EntEstatus>(delegate(IEntidad enti) { return (EntEstatus)enti; });

                indexCombo = 0;
                this.cmbEstatus.Items.Clear();
                this.cmbEstatus.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntEstatus elemento in ListaEstatus)
                    this.cmbEstatus.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveEstatus.ToString(), true));

            }
            catch (Exception ex)
            {

            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                CtrlSolicitud control = new CtrlSolicitud();
                control.usuario = this.usuario;
                GuardarEstado("ListadoSolicitudes", control.CriteriosObtenerTodos(txtFechaInicio.Text, txtOficio.Text, (cmbActivos.SelectedIndex > 0 ? cmbActivos.SelectedValue : string.Empty), (cmbArea.SelectedIndex > 0 ? cmbArea.SelectedValue : string.Empty), (cmbEstatus.SelectedIndex > 0 ? cmbEstatus.SelectedValue : string.Empty)));
                grdSoliciudes.DataSource = (List<Entidades.General.IEntidad>)ObtenerEstado("ListadoSolicitudes");
                grdSoliciudes.DataBind();
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        #region "Utilerias"

        private void EjecutarScript(string Script)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>";
            msg = msg + Script + "</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", msg, false);
        }

        private void Mensaje(string mensaje)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>alert('";
            msg = msg + mensaje + "');</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", msg, false);
        }

        #endregion

        #region Eventos Grid Solicitudes

        protected void grdSoliciudes_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;

            grdSoliciudes.DataSource = (List<Entidades.General.IEntidad>)ObtenerEstado("ListadoSolicitudes");
            grdSoliciudes.DataBind();
        }

        protected void grdSoliciudes_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Editar")
                Response.Redirect("ProxyUserControls.aspx?Url=Solicitud&accion=editar&IdSolicitud=" + e.CommandArgument.ToString(), true);
            else if (e.CommandName == "Eliminar")
            {
                int claveSolicitud = int.Parse(e.CommandArgument.ToString());
                CtrlSolicitud control = new CtrlSolicitud();
                control.Eliminar(claveSolicitud);
                List<Entidades.General.IEntidad> listSolicitudes = (List<Entidades.General.IEntidad>)ObtenerEstado("ListadoSolicitudes");
                int indexSolicitud = listSolicitudes.FindIndex(s => ((EntSolicitud)s).CveSolicitud == claveSolicitud);
                listSolicitudes.RemoveAt(indexSolicitud);
                grdSoliciudes.DataSource = listSolicitudes;
                grdSoliciudes.DataBind();
                GuardarEstado("ListadoSolicitudes", listSolicitudes);
                UpdatePanelCuerpo.Update();
            }
        }
        protected void grdSoliciudes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string cve_solicitud        = e.Row.Cells[0].Text;
                ImageButton btnEliminar     = e.Row.Cells[1].FindControl("btnEliminar") as ImageButton;

                HyperLink item              = e.Row.Cells[2].FindControl("btnAgregar") as HyperLink;

                e.Row.Attributes.Add("onMouseOver", "this.style.cursor = 'hand';this.style.backgroundColor = 'yellow';");
                e.Row.Attributes.Add("onMouseOut", "this.style.backgroundColor = 'white';");
                string path = "../../Marcos/ProxyUserControls.aspx?Url=Obra&vieneDeConsulta=S&accion=nuevo&IdSolicitud=" + cve_solicitud;

                if (item != null)
                {
                    item.NavigateUrl        = "Javascript:SelectedObjRptPopUp('" + path + "');";
                }

                if (btnEliminar != null)
                {
                    btnEliminar.Attributes.Add("onclick", "javascript:return " + "confirm('Esta seguro de eliminar esta Solicitud y sus Obras asociadas?. " + "')");
                    String usuarioMtto = grdSoliciudes.DataKeys[e.Row.RowIndex].Values["UsuarioMtto"].ToString();
                    // Si no es una obra que tu registraste
                    if (usuarioMtto != string.Empty && int.Parse(usuarioMtto) != usuario.CveUsuario)
                    {
                        // Y no eres Control de Obras o Coordinador ... entonces no puedes eliminar
                        if (usuario.CveRol != 0 || usuario.CveRol != 10)
                            btnEliminar.Visible = false;
                    }
                }
            }
        }
        
        #endregion
    }
}